package com.group4.datafactorybackend.service;

import com.group4.datafactorybackend.common.R;
import com.group4.datafactorybackend.entity.DTO.CreateOrUpdateDirectoryDTO;
import com.group4.datafactorybackend.entity.VO.DirectoryVO;

import java.util.List;

/**
 * @author 卑微小峰
 * @date 2022/8/1
 * @description 目录管理业务逻辑接口层
 */
public interface DirectoryService {

    /**
     * @author 卑微小峰
     * @param createOrUpdateDirectoryDTO 新增、修改目录接收参数实体类
     * @return R
     * @description 新增目录
     */
    R<?> addDirectory(CreateOrUpdateDirectoryDTO createOrUpdateDirectoryDTO);

    /**
     * @author 卑微小峰
     * @param directoryCode 删除的目录编号
     * @return R
     * @description 删除目录
     */
    R<?> deleteDirectory(String directoryCode);

    /**
     * @author 卑微小峰
     * @param createOrUpdateDirectoryDTO 编辑目录接收参数DTO
     * @return R
     * @description 编辑目录
     */
    R<?> updateDirectory(CreateOrUpdateDirectoryDTO createOrUpdateDirectoryDTO);

    /**
     * @author 卑微小峰
     * @param menuCode 菜单编号
     * @return R
     * @description 获取目录列表
     */
    List<DirectoryVO> getDirectoryList(String menuCode);

    /**
     * @author 卑微小峰
     * @param parentCode 父级目录编号
     * @param directoryCodeList 目录编号集合
     * @return List
     * @description 获取当前目录及所有子目录的编号
     */
    List<String> getAllDirectoryCode(String parentCode,List<String> directoryCodeList);

    List<String> pathParentDirectoryNameIsRepeat(String parentCode,List<String> parentDirectoryNameList);
}
